package com.labot.dao.hibernate;

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;

import com.labot.dao.PremioDao;
import com.labot.model.Envio;
import com.labot.model.Premio;
@Repository("PremioDao")
public class PremioDaoHibernate extends HistoryTackerDaoHibernate<Premio, Long> implements PremioDao {

	
    public PremioDaoHibernate() {
        super(Premio.class);
    }

	
	public PremioDaoHibernate(Class<Premio> persistentClass) {
		super(persistentClass);
		// TODO Auto-generated constructor stub
	}


	@SuppressWarnings("unchecked")
	@Override
	public List<Premio> getPremiosporRango(Date fechaDesde, Date fechaHasta,Integer puntos) throws Exception {
		
		String consulta = "from Premio p WHERE 1=1";
		
		if (fechaDesde != null )
			consulta = consulta + " AND p.fechaFin >= :fechaDesde";
		if (puntos != 0 && puntos!= -1)
			consulta = consulta + " AND p.puntos <= :puntos";
		
		consulta = consulta + " order by p.fechaFin desc";
		
		Query qry = getSession().createQuery(consulta);
		
		if (fechaDesde != null )
			qry.setParameter("fechaDesde", fechaDesde);
		if (puntos != 0 &&  puntos!= -1)
			qry.setParameter("puntos", puntos);
		
		
		 return (List<Premio>) qry.list();
	}

	//Como el Id es un Bigint, solo admite un Long!!!!!!!!
	@Override
	public Premio getPremiosporID(Integer id) throws Exception {
		Long l = new Long(id);
		Query qry= getSession().createQuery("from Premio e WHERE e.id = :id");
		qry.setParameter("id", l);
		return (Premio) qry.list().get(0);
	}



    /**
     * {@inheritDoc}
     */
//    @SuppressWarnings("unchecked")
//    public List<Bitacora> getBitacoraUser(Integer id) {
//		Query qry = getSession().createQuery("from Bitacora b WHERE b.idCliente = id order by b.fecha desc");
//		qry.setParameter("id", id);
//        return (List<Bitacora>) qry.list();
//    }

}
